/**  
 * @Title: ResourceCache.java
 * @Package: com.itic.appbase.applications.cacheUtils
 * @Description: 
 * @author: idong
 * @date: 2015年6月5日 上午10:18:07
 * @version: V1.0  
 */

package com.itic.appbase.applications.cacheutils;

import com.itic.appbase.applications.sys.resource.persistence.model.Resource;
import com.itic.appbase.framework.common.constants.Constants;
import com.itic.appbase.framework.utils.CacheHelper;

/**
 * <p>
 * Company: itic
 * </p>
 * 资源缓存. </br>
 * 基于url获取Resource</br>
 * 主键策略：RESOURCE_CACHE_PREFIX + 大写资源URI(_USER_INIT) 缓存值：RESOURCE</br>
 * 更新策略：ResourceController进行edit,delete</br>
 * 缓存调用：InnerCommonServiceImpl进行getResourceByUrl时进行get,put</br>
 * 注意：Resource 需要实现序列化
 * 
 * @author: idong
 * @date: 2015年6月5日 上午10:18:07
 * @version: V1.0
 */
public class ResourceCache {
    
    private ResourceCache() {
        
    }
    
    /**
     * 清除缓存
     * 
     * @param codeType
     */
    public static void remove(String uri) {
        CacheHelper.remove(keyFormatter(uri));
    }

    /**
     * 获取缓存
     * 
     * @param codeType
     * @return
     */
    public static Resource get(String uri) {
        return (Resource) CacheHelper.get(keyFormatter(uri));
    }

    /**
     * 放入缓存
     * 
     * @param codeType
     * @param codeList
     */
    public static void put(String uri, Resource resource) {
        CacheHelper.put(keyFormatter(uri), resource);
    }

    /**
     * 缓存key生成
     * 
     * @param codeType
     * @return
     */
    private static String keyFormatter(String uri) {
        StringBuilder sb = new StringBuilder(Constants.RESOURCE_CACHE_PREFIX);
        sb.append(uri.replaceAll("/", "_").toUpperCase().trim());
        return sb.toString();
    }
}
